import {useUserStore} from '@/stores'
import router from '@/router'
import axios from 'axios'
import {ElMessage} from 'element-plus'

const baseURL = 'http://big-event-vue-api-t.itheima.net'

const instance = axios.create({
        // TODO 1. 基础地址，超时时间
        baseURL,
        timeout: 10000
})
//请求拦截器
instance.interceptors.request.use(
        (config) => {
                // TODO 2. 携带token
                const useStore = useUserStore()
                if (useStore.token) {
                        config.headers.Authorization = useStore.token
                }
                return config
        },
        (err) => Promise.reject(err)
)
// 响应拦截器
instance.interceptors.response.use(
        (res) => {
                // TODO 3. 摘取核心响应数据
                if (res.data.code === 0) {
                        return res
                }
                // TODO 4. 处理业务失败，给错误提示，抛出错误
                ElMessage.error(res.data.message || '服务异常')
                return Promise.reject(res.data)
        },
        (err) => {
                // TODO 5. 错误的默认情况，直接给提示
                ElMessage.error(err.response.data.message || '服务异常')
                // TODO 6. 处理401错误，权限不足或者token过期，拦截到登录页
                if (err.response?.status === 401) {
                        router.push('/login')
                }
                return Promise.reject(err)
        }
)

export default instance
export {baseURL}
